import { defineStore } from 'pinia'

export interface UserInfo {
  id: string
  token: string
  name?: string
  avatar?: string
  roles?: string[]
}

export interface UserState {
  userInfo: UserInfo
}

const defaultUserInfo: UserInfo = {
  id: '',
  token: '',
  name: '',
  avatar: '',
  roles: []
}

export const useUserStore = defineStore({
  id: 'useUserStore',
  state: (): UserState => ({
    userInfo: { ...defaultUserInfo }
  }),
  actions: {
    setUserInfo(payload: UserInfo) {
      this.userInfo = { ...payload }
      uni.setStorageSync('userInfo', this.userInfo)
    },
    resetUserInfo() {
      this.userInfo = { ...defaultUserInfo }
      uni.removeStorageSync('userInfo')
    },
    async getUserInfo() {
      //   try {
      //     const storedUserInfo = uni.getStorageSync('userInfo')
      //     if (storedUserInfo) {
      //       this.userInfo = storedUserInfo
      //     } else {
      //       // 如果本地没有用户信息，可以调用API获取用户信息
      //       const res = await this.fetchUserInfoFromApi()
      //       this.setUserInfo(res)
      //     }
      //   } catch (error) {
      //     console.error('获取用户信息失败', error)
      //     uni.showToast({
      //       title: '获取用户信息失败',
      //       icon: 'none'
      //     })
      //   }
    },
    async login(username: string, password: string) {
      //   try {
      //     // 模拟调用登陆接口
      //     const response = await uni.request({
      //       url: '/api/login',
      //       method: 'POST',
      //       data: { username, password }
      //     })
      //     const { data } = response[1]
      //     if (data.returnCode === '200') {
      //       this.setUserInfo(data.userInfo)
      //       uni.showToast({
      //         title: '登录成功',
      //         icon: 'success'
      //       })
      //       uni.switchTab({ url: '/pages/index/index' })
      //     } else {
      //       uni.showToast({
      //         title: data.returnMessage || '登录失败',
      //         icon: 'none'
      //       })
      //     }
      //   } catch (error) {
      //     console.error('登录失败', error)
      //     uni.showToast({
      //       title: '登录失败，请稍后重试',
      //       icon: 'none'
      //     })
      //   }
    },
    async logout() {
      //   try {
      //     // 模拟调用退出接口
      //     await uni.request({
      //       url: '/api/logout',
      //       method: 'POST',
      //       header: {
      //         Authorization: this.userInfo.token
      //       }
      //     })
      //     this.resetUserInfo()
      //     uni.showToast({
      //       title: '退出成功',
      //       icon: 'success'
      //     })
      //     uni.reLaunch({ url: '/pages/login/index' })
      //   } catch (error) {
      //     console.error('退出登录失败', error)
      //     uni.showToast({
      //       title: '退出失败，请稍后重试',
      //       icon: 'none'
      //     })
      //   }
    }
  }
})
